<template>
    <a-drawer
            :title="title"
            :width="800"
            placement="right"
            :closable="false"
            @close="close"
            :visible="visible">
        <a-spin :spinning="confirmLoading">
            <a-form-model ref="form" :model="model" :rules="validatorRules">
                <a-row>
<#list columnList as po><#rt/>
<#if po.javaName !='id' && po.javaName !='delFlag'&& po.javaName !='createBy' && po.javaName !='createName'
&& po.javaName !='createTime' && po.javaName !='updateBy'  && po.javaName !='updateName'  && po.javaName !='updateTime'
&& po.javaName !='deptCode'  && po.javaName !='deptName' && po.javaName !='processInstanceId' && po.javaName !='auditStatus'
&& po.javaName !='auditTime' && po.javaName !='submit' ><#rt/>
                    <a-col :span="span">
                        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="${po.javaName}" label="${po.desc}">
<#if po.javaType =='Date'>
                            <a-date-picker show-time style="width: 100%" v-model="model.${po.javaName}" />
<#elseif po.javaType =='datetime'>
                            <a-date-picker showTime valueFormat='YYYY-MM-DD HH:mm:ss' v-model="model.${po.javaName}" />
<#elseif "Integer,BigDecimal,"?contains(po.javaType)>
                            <a-input type="number" v-model="model.${po.javaName}" />
<#else>
                            <a-input placeholder="请输入${po.desc}" v-model="model.${po.javaName}" />
</#if>
                        </a-form-model-item>
                    </a-col>
</#if>
</#list>
                </a-row>
            </a-form-model>
        </a-spin>

        <div class="drawer-bootom-button">
            <a-button type="primary" @click="handleOk">确定</a-button>
            <a-button type="primary" @click="handleCancel">取消</a-button>
        </div>
    </a-drawer>
</template>

<script>
    import { httpAction } from '@/api/manage'
    import moment from "moment"

    const dictCodes = [
        <#list columnList as po>
        '${po.name}',
        </#list>
    ]

    export default {
        name: "${javaNameBig}Modal",
        data () {
            return {
                title:"操作",
                visible: false,
                model: {},
                span: 24,
                labelCol: {
                    xs: { span: 24 },
                    sm: { span: 5 },
                },
                wrapperCol: {
                    xs: { span: 24 },
                    sm: { span: 16 },
                },
                <#list columnList as po>

                items_${po.name}: [],
                </#list>
                confirmLoading: false,
                validatorRules:{
                    <#list columnList as po>
                    <#if po.javaName !='id' && po.javaName !='delFlag'&& po.javaName !='createBy' && po.javaName !='createName'
&& po.javaName !='createTime' && po.javaName !='updateBy'  && po.javaName !='updateName'  && po.javaName !='updateTime'
&& po.javaName !='deptCode'  && po.javaName !='deptName' && po.javaName !='processInstanceId' && po.javaName !='auditStatus'
&& po.javaName !='auditTime' && po.javaName !='submit' >
                    ${po.javaName}:[{ required: true, message: '请输入${po.desc}!' }],
                    </#if>
                    </#list>
                },
                url: {
                    add: "/gateway/${javaName?lower_case}/add",
                    edit: "/gateway/${javaName?lower_case}/edit",
                },
            }
        },
        created () {
        },
        methods: {
            moment,
            add () {
                //初始化默认值
                this.edit({});
            },
            edit (record) {
                this.model = Object.assign({}, record);
                this.visible = true;
            },
            close () {
                this.$emit('close');
                this.visible = false;
                this.$refs.form.clearValidate();
            },
            handleOk () {
                const that = this;
                // 触发表单验证
                this.$refs.form.validate(valid => {
                    if (valid) {
                        that.confirmLoading = true;
                        let httpurl = '';
                        let method = '';
                        if(!this.model.id){
                            httpurl+=this.url.add;
                            method = 'post';
                        }else{
                            httpurl+=this.url.edit;
                            method = 'post';
                        }
                        httpAction(httpurl,this.model,method).then((res)=>{
                            if(res.success){
                                that.$message.success(res.message);
                                that.$emit('ok');
                            }else{
                                that.$message.warning(res.message);
                            }
                        }).finally(() => {
                            that.confirmLoading = false;
                            that.close();
                        })
                    }else{
                        return false;
                    }
                })
            },
            handleCancel () {
                this.close()
            },


        }
    }
</script>

<style lang="less" scoped>
    /**Button按钮间距*/
    .ant-btn {
        margin-left: 30px;
        margin-bottom: 30px;
        float: right;
    }
    /**抽屉按钮样式*/
    .drawer-bootom-button {
        position: absolute;
        bottom: -8px;
        width: 100%;
        border-top: 1px solid #e8e8e8;
        padding: 10px 16px;
        text-align: right;
        left: 0;
        background: #fff;
        border-radius: 0 0 2px 2px;
    }
</style>